20.8 OpenSSL 套接字SSL传输文件

您所在的位置:网站首页 文件传输 两端加密 手机软件 20.8 OpenSSL 套接字SSL传输文件

20.8 OpenSSL 套接字SSL传输文件

2024-07-09 12:16| 来源: 网络整理| 查看: 265

有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。

服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接字,与保存文件路径即可,其他部分同上。

#include #include #include #include #include #include #include #include #include #include extern "C" { #include } #pragma comment(lib, "WS2_32.lib") #pragma comment(lib,"libssl.lib") #pragma comment(lib,"libcrypto.lib") #define MAXBUF 1024 // 从路径中获取当前文件名 char* GetFileName(char* Path) { if (strchr(Path, '\\')) { char ch = '\\'; char* ref = strrchr(Path, ch) + 1; return ref; } else { char ch = '/'; char* ref = strrchr(Path, ch) + 1; return ref; } } // 下载文件到当前目录 // 传入套接字句柄,以及放置根目录 void DownloadFile(SSL* ptr, const char* RootPath) { int FileSize = 0; char FilePath[1024] = { 0 }; char buffer[1024] = { 0 }; // 接收文件长度 SSL_read(ptr, &FileSize, 4); // 接收文件路径 SSL_read(ptr, FilePath, 1024); // 获取到文件名 char* FileName = GetFileName(FilePath); // 拼接路径 char sz[1024] = { 0 }; strcpy(sz, RootPath); strcat(sz, FileName); std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3